package com.zyf.chapter02.behavior.chain.achieve.first.v2;

/**
 * 重构版本
 * @author yifeng
 */
public abstract class Handler {
    protected Handler successor = null;

    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }

    public void handle() {
        boolean handled = doHandle();
        if (!handled && successor != null) {
            successor.handle();
        }
    }

    /**
     * 具体的处理器只需要实现自己的业务逻辑即可，无需关心链条往下调用。
     * @return 能否处理，能:true，不能:false
     */
    public abstract boolean doHandle();


}
